package com.coolingme.annotation;

//import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;

/**
 * 自定义注解
 *
 * @author wangyue
 * @date 2019/3/17 16:57
 */
// 元注解
// @Target 描述当前注解可以在哪里被引用,两种写法
//@Target({ElementType.FIELD,ElementType.METHOD})
@Target({FIELD,METHOD,CONSTRUCTOR})
// @Retention 描述这个注解存在什么作用域中
// RetentionPolicy.RUNTIME 内存执行
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

    // 方法名为value,使用时可以不用传值
    // 若不为value 或有多个方法,使用时必须加上 (方法名=) 如 value = ""
    // String[] 为返回值，将传入的参数返回出去，起到一个搬运的作用
    String[] value();

    // puublic abstract 可省略 公共抽象的方法
//    public abstract String[] value();

    // 设置一个默认值，引用时就可以不用加参数
//    String[] value() default "Dylan";

}
